package com.jdls.tanhua.commons.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author 嘉德罗斯
 * @date 2021/10/22
 */
public class JwtUtils {

    private static final long l = System.currentTimeMillis();

    private  static final String key = "jdls";
    //生成token
    public static String getToken(Map map){

        String token = Jwts.builder()//生成
                .signWith(SignatureAlgorithm.HS512, key) //加密算法
                .setClaims(map)//写入数据
                .setExpiration(new Date(l + (3600L*1000)))//设置超时时间
                .compact();//生成token
        return token;
    }


    //解析token
    public static Claims getBody(String token){
        Claims body = Jwts.parser()//解析token
                .setSigningKey(key)//提供密钥
                .parseClaimsJws(token)//传入要解析的token
                .getBody();//生成解析后的tonken
        return body;
    }

    public static boolean get(String token){
        try {
            Claims body = Jwts.parser()//解析token
                    .setSigningKey(key)//提供密钥
                    .parseClaimsJws(token)//传入要解析的token
                    .getBody();//生成解析后的tonken
        }catch (ExpiredJwtException e){
            System.out.println("token超时");
            return false;
        }catch (MalformedJwtException e){
            System.out.println("token被修改");
            return false;
        }
        return true;
    }
}
